/**
 * 仅有courseId的请求接口
 */
export interface CourseIdRequest {
    courseId: string;
}

export interface CourseResourceUploadRequest {
  id: string;
  name: string;
  fileName: string;
  resourceType: string;
  remark: string;
  sectionList: any[];
  open: any;
}

////////////////////////////////////////////////

/**
 * 计划课程信息，课程信息vo
 */
export interface CourseCourseVo {
  /**
   * 年龄标签
   */
  ageList?: CourseAgeVo[];
  /**
   * 购买人数
   */
  buyCount?: number;
  /**
   * 课程所属的分类实体
   */
  category?: CourseCategoryVo;
  /**
   * 课程所属的分类id
   */
  categoryId?: string;
  /**
   * 孩子年龄标签id数组
   */
  childAgeList?: number[];
  /**
   * 孩子年龄标签
   */
  childList?: CourseAgeVo[];
  /**
   * 是否是核心课程，(1:是，0:否)
   */
  core?: boolean;
  /**
   * 课程图片
   */
  courseImgList?: CourseCourseOss[];
  /**
   * 课程价格
   */
  coursePrice?: number;
  /**
   * 课程排序，(前端显示使用)
   */
  courseRank?: number;
  /**
   * 课程封面
   */
  cover1?: string | null;
  /**
   * 竖长封面图
   */
  cover2?: string | null;
  /**
   * 横屏封面图
   */
  cover3?: string | null;
  /**
   * 数据创建者
   */
  createBy?: string;
  /**
   * 数据创建时间
   */
  createTime?: Date;
  /**
   * 上次看到的章节id
   */
  currentSectionId?: number;
  /**
   * 删除标志，（0代表存在 2代表删除）
   */
  delFlag?: string;
  /**
   * 审核状态码
   */
  examineStatusCode?: number;
  /**
   * 状态码在显示时需要被翻译为状态字符串，由状态码动态转换
   */
  examineStatusMsg?: string;
  /**
   * 是否收藏
   */
  favorite?: boolean;
  /**
   * 收藏时间
   */
  favoriteTime?: Date;
  /**
   * 完成学习人数
   */
  finishCount?: number;
  grade?: CourseGradeVo;
  /**
   * 核心课程id
   */
  gradeId?: string;
  /**
   * 主键
   */
  id?: string;
  /**
   * 课程简介
   */
  introduction?: string;
  /**
   * 是否已完成, 已完成为1,未完成为0,没学就是null
   */
  isComplete?: number;
  /**
   * 课程的标签id
   */
  labelIds?: string[];
  /**
   * 课程标签
   */
  labels?: CourseLabelVo[];
  /**
   * 上次学习时间
   */
  lastTime?: Date;
  /**
   * 课程名称
   */
  name: string;
  /**
   * 上架状态，(0: 不上架；1:学校上架，2:公共上架)
   */
  onlineStatus?: string;
  /**
   * 上架状态的描述，由上架状态转换而来
   */
  onlineStatusMsg?: string;
  /**
   * 上架时间
   */
  onlineTime?: Date;
  /**
   * rank
   */
  orderNum?: number;
  /**
   * 讲师团队ID
   */
  organizationId?: string;
  /**
   * 所属组织的名称
   */
  orgName?: string;
  /**
   * 关联课程拥有者主键
   */
  ownerId?: string;
  /**
   * 父母年龄标签id数组
   */
  parentAgeList?: string[];
  /**
   * 父母年龄标签
   */
  parentList?: CourseAgeVo[];
  /**
   * 付费状态，(0:免费，1:会免，2:收费,3:会免或收费)
   */
  paymentStatus?: number;
  /**
   * 阶段进度
   */
  progress?: number;
  /**
   * 评分
   */
  rating?: number;
  /**
   * 备注
   */
  remark?: string;
  /**
   * 记录选中的id
   */
  labelList: Array<string>,
  /**
   * 划线价
   */
  rulingPrice?: number;
  /**
   * 所属场景id
   */
  sceneId: string;
  /**
   * 所属场景
   */
  sceneName?: string;
  /**
   * 专家评分
   */
  score?: number;
  section?: CourseSectionVo;
  /**
   * 章节列表数据
   */
  sectionList?: CourseSectionVo[];
  /**
   * 状态，(1:正常，0:禁用)
   */
  status?: string;
  /**
   * 学习人数
   */
  studyCount?: number;
  /**
   * 学习人数
   */
  studyNum?: number;
  /**
   * 副标题
   */
  subtitle: string;
  /**
   * 总章节数
   */
  totalSection?: number;
  /**
   * 课程类型:1视频课程，2读书音频
   */
  type: string;
  typeMsg?: string;
  /**
   * 数据更新者
   */
  updateBy?: string;
  /**
   * 数据更新时间
   */
  updateTime?: Date;
  /**
   * 是否点过有用
   */
  useFul?: boolean;
  // 勾选的能力标签列表
  capacityLabelList: string[]
}

/**
 * 课程年龄表vo，课程年龄表
 */
export interface CourseAgeVo {
  /**
   * 年龄段的开始年龄
   */
  beginAge: number;
  /**
   * 年龄段的简介
   */
  brief?: string;
  /**
   * 年龄段的结束年龄
   */
  endAge: number;
  /**
   * 建议的身高范围
   */
  height?: string;
  /**
   * 年龄段主键
   */
  id?: string;
  /**
   * 给孩子的一封信
   */
  letter?: string;
  /**
   * 年龄段的后一对应的年龄段
   */
  nextId?: string;
  /**
   * 年龄段的前一对应的年龄段
   */
  previousId?: string;
  /**
   * 年龄段类型，（1 儿童年龄段；2 家长年龄段）
   */
  type?: string;
  /**
   * 儿童年龄段或家长年龄段
   */
  value?: string;
  /**
   * 建议的体重范围
   */
  weight?: string;
}

/**
 * 课程分类Vo，分类id
 */
export interface CourseCategoryVo {
  /**
   * 数据创建者
   */
  createBy?: string;
  /**
   * 数据创建时间
   */
  createTime?: Date;
  /**
   * 删除标志，（0代表存在 2代表删除）
   */
  delFlag?: string;
  /**
   * 分类ID
   */
  id?: string;
  /**
   * 分类名称
   */
  name: string;
  /**
   * 关联父分类主键
   */
  parentId?: string;
  /**
   * 热门分类排序
   */
  rank?: number;
  /**
   * 备注
   */
  remark?: string;
  /**
   * 分类状态
   */
  status?: string;
  /**
   * 数据更新者
   */
  updateBy?: string;
  /**
   * 数据更新时间
   */
  updateTime?: Date;
}

/**
 * 课程图片关联对象，课程图片关联表
 */
export interface CourseCourseOss {
  /**
   * 课程ID
   */
  courseId: string;
  /**
   * 排序
   */
  orderNum: number;
  /**
   * 图片ID
   */
  ossId: number;
  /**
   * 类型
   */
  type: number;
  /**
   * url
   */
  url: string;
}

/**
 * 年级对象vo，年级表
 */
export interface CourseGradeVo {
  /**
   * 主键
   */
  id?: string;
  /**
   * 年级名称
   */
  name: string;
  /**
   * 备注
   */
  remark: string;
  /**
   * 年级的值
   */
  value?: number;
}

/**
 * 标签vo，课程标签
 */
export interface CourseLabelVo {
  /**
   * 数据创建者
   */
  createBy?: string;
  /**
   * 数据创建时间
   */
  createTime?: Date;
  /**
   * 删除标志，（0代表存在 2代表删除）
   */
  delFlag?: string;
  /**
   * 标签ID
   */
  id?: string;
  /**
   * 主键名称
   */
  name?: string;
  /**
   * 状态（0正常 1停用）
   */
  status?: string;
  /**
   * 数据更新者
   */
  updateBy?: string;
  /**
   * 数据更新时间
   */
  updateTime?: Date;
  /**
   * 图标url
   */
  url?: string;
}

//////////////////////////////////////////////////////

/**
 * 章节信息vo，必修章节信息
 */
export interface CourseSectionVo {
  /**
   * 允许评论，（0:不允许，1:允许）
   */
  allowComment?: boolean;
  /**
   * 评论数
   */
  commentNum?: number;
  /**
   * 是否完成
   */
  complete?: boolean;
  /**
   * 课程ID
   */
  courseId: string;
  /**
   * 所属课程名称
   */
  courseName?: string;
  /**
   * 数据创建者
   */
  createBy?: string;
  /**
   * 数据创建时间
   */
  createTime?: Date;
  /**
   * 删除标志，（0代表存在 2代表删除）
   */
  delFlag?: string;
  /**
   * 章节描述
   */
  description: string;
  /**
   * 是否免费，(1免费，0收费)
   */
  free?: boolean;
  /**
   * 高度
   */
  height?: number;
  /**
   * 主键
   */
  id: string;
  /**
   * 章节信息
   */
  length?: number;
  /**
   * 章节名称
   */
  name: string;
  /**
   * 排序
   */
  orderNum?: number;
  /**
   * 章节进度
   */
  progress?: number;
  /**
   * 关联资源主键
   */
  resourceId: string;
  /**
   * 资源类型
   */
  resourceType?: string;
  /**
   * 脚本，（可以为富文本）
   */
  script?: string;
  /**
   * 状态，(1:正常，0:禁用)
   */
  status?: string;
  /**
   * 学习人数
   */
  studyNum?: number;
  /**
   * 数据更新者
   */
  updateBy?: string;
  /**
   * 数据更新时间
   */
  updateTime?: Date;
  /**
   * vid
   */
  vid?: string;
  /**
   * 宽度
   */
  width?: number;
}

/////////////////////////////////////////
/**
 * 系统审核任务实体
 */
export interface SysExamineTaskVo {
  /**
   * 数据创建者
   */
  createBy?: string;
  /**
   * 数据创建时间
   */
  createTime?: Date;
  /**
   * 当前审核子任务
   */
  currentNum?: number;
  /**
   * 删除标志，（0代表存在 2代表删除）
   */
  delFlag?: string;
  /**
   * 确定审核者的id
   */
  examinerId?: string;
  /**
   * 审核状态码
   */
  examineStatusCode?: number;
  /**
   * 审核状态描述，由状态码生成
   */
  examineStatusMsg?: string;
  /**
   * 主键
   */
  id?: string;
  /**
   * 发起者id
   */
  initiatorId?: string;
  /**
   * 发起人名字
   */
  initiatorName?: string;
  /**
   * 最大审核子任务
   */
  maxNum?: number;
  /**
   * 名字（如果是课程类型就是课程名字）
   */
  name?: string;
  /**
   * 下一个审核任务id
   */
  nextId?: string;
  /**
   * 组织名
   */
  organizationName?: string;
  /**
   * 父审核任务id
   */
  parentId?: string;
  /**
   * 原因说明
   */
  reason?: string;
  /**
   * 源id
   */
  sourceId: string;
  /**
   * 源类型
   */
  sourceType?: string;
  /**
   * 状态，(0未处理，1已处理)
   */
  status?: string;
  /**
   * 数据更新者
   */
  updateBy?: string;
  /**
   * 数据更新时间
   */
  updateTime?: Date;
}

//////////////////////////////////////////////////
export interface CommentNode {
  children?: CommentNode[];
  comment?: ClientCommentVo;
  id?: string;
  parentId?: string;
}

/**
 * 返回评论列表
 */
export interface ClientCommentVo {
  /**
   * 用户头像
   */
  avatar?: string;
  /**
   * 评论内容
   */
  comment: string;
  /**
   * 数据创建者
   */
  createBy?: string;
  /**
   * 数据创建时间
   */
  createTime?: Date;
  /**
   * 是否点踩
   */
  disliked?: boolean;
  /**
   * 关联话题主键
   */
  hashTagId?: number;
  id?: string;
  /**
   * 是否点赞
   */
  liked?: boolean;
  /**
   * 用户昵称
   */
  nickName?: string;
  /**
   * 父评论id
   */
  parentId?: string;
  /**
   * 被回复的评论的id
   */
  replyCommentId?: string;
  /**
   * 回复数
   */
  replyNum?: number;
  /**
   * 被回复的人的昵称
   */
  replyTo?: string;
  /**
   * 评论被回复人id,暂时只用于新增互动消息
   */
  replyToId?: string;
  /**
   * 源id，根据source_type确定是文章主键，还是课程章节主键，还是读书章节主键
   */
  sourceId: string;
  /**
   * 评论源类型（0文章，1课程，2读书）
   */
  sourceType: string;
  /**
   * 评论状态，（0正常，1违禁）
   */
  status?: string;
  /**
   * 数据更新者
   */
  updateBy?: string;
  /**
   * 数据更新时间
   */
  updateTime?: Date;
  /**
   * 评论者id
   */
  userId?: string;
  /**
   * 用户类型
   */
  userType?: string;
  /**
   * 点踩
   */
  voteDown?: number;
  /**
   * 点赞
   */
  voteUp?: number;
}

///////////////////////////////////////////////
/**
 * 课程分类Vo
 */
export interface CourseCategoryVo {
  /**
   * 数据创建者
   */
  createBy?: string;
  /**
   * 数据创建时间
   */
  createTime?: Date;
  /**
   * 删除标志，（0代表存在 2代表删除）
   */
  delFlag?: string;
  /**
   * 分类ID
   */
  id?: string;
  /**
   * 分类名称
   */
  name: string;
  /**
   * 关联父分类主键
   */
  parentId?: string;
  /**
   * 热门分类排序
   */
  rank?: number;
  /**
   * 备注
   */
  remark?: string;
  /**
   * 分类状态
   */
  status?: string;
  /**
   * 数据更新者
   */
  updateBy?: string;
  /**
   * 数据更新时间
   */
  updateTime?: Date;
}

/////////////////////////////////////////////////////
/**
 * 标签vo，课程标签
 */
export interface CourseLabelVo {
  /**
   * 数据创建者
   */
  createBy?: string;
  /**
   * 数据创建时间
   */
  createTime?: Date;
  /**
   * 删除标志，（0代表存在 2代表删除）
   */
  delFlag?: string;
  /**
   * 标签ID
   */
  id?: string;
  /**
   * 主键名称
   */
  name?: string;
  /**
   * 状态（0正常 1停用）
   */
  status?: string;
  /**
   * 数据更新者
   */
  updateBy?: string;
  /**
   * 数据更新时间
   */
  updateTime?: Date;
  /**
   * 图标url
   */
  url?: string;

  checked?: boolean;
}

//////////////////////////////////////////////////////////

export interface VodPlayAuth {
  /**
   * 当前看的位置
   */
  currentTime?: number;
  /**
   * 音视频长度
   */
  duration?: number;
  /**
   * 播放授权
   */
  playAuth?: string;
  /**
   * 播放授权截止时间，当前时间+超时时间的毫秒值
   */
  playAuthTimeOut?: number;
  /**
   * vid
   */
  vid?: string;
}

////////////////////////////////////////////////////////

export interface CourseResourceVo {
  /**
   * 备份资源id，防止某个资源平台挂了，可以到备份平台看
   */
  backupId?: string;
  /**
   * 码率，单位：Kbps
   */
  bitrate?: number;
  /**
   * 数据创建者
   */
  createBy?: string;
  /**
   * 数据创建时间
   */
  createTime?: Date;
  /**
   * 删除标志，（0代表存在 2代表删除）
   */
  delFlag?: string;
  /**
   * 高度
   */
  height?: number;
  /**
   * 主键
   */
  id?: string;
  /**
   * 时长
   */
  length?: number;
  /**
   * 资源名称
   */
  name: string;
  /**
   * 是否让机构外的用户使用，(0:私有，1:公有)
   */
  open?: boolean;
  /**
   * 排序
   */
  orderNum?: number;
  /**
   * 机构id
   */
  organizationId?: number;
  /**
   * 资源引用数
   */
  refCount?: number;
  /**
   * 备注
   */
  remark?: string;
  /**
   * 资源平台名称，如阿里云，腾讯云等等
   */
  resourcePlatform?: string;
  /**
   * 资源大小
   */
  resourceSize?: number;
  /**
   * 资源上传状态，(0：上传中，1：上传成功，2：上传失败)
   */
  resourceStatus?: number;
  resourceStatusMsg?: string;
  /**
   * 资源类型，(1:视频2:音频)
   */
  resourceType: string;
  resourceTypeMsg?: string;
  /**
   * 资源地址
   */
  resourceUrl?: string;
  /**
   * 已关联课程
   */
  sectionList?: CourseSectionVo[];
  /**
   * 状态，(1:正常，0:禁用)
   */
  status?: string;
  /**
   * 数据更新者
   */
  updateBy?: string;
  /**
   * 数据更新时间
   */
  updateTime?: Date;
  /**
   * 上传者id
   */
  userId?: string;
  /**
   * vid
   */
  vid?: string;
  /**
   * 宽度
   */
  width?: number;
}

////////////////////////////////////////////////////////////
export interface VodUploadAuth {
  /**
   * 额外消息
   */
  extraInfo?: { [key: string]: { [key: string]: any } };
  /**
   * 服务提供商
   */
  service?: string;
  /**
   * 上传地址
   */
  uploadAddress?: string;
  /**
   * 上传授权
   */
  uploadAuth?: string;
  /**
   * vid
   */
  vid?: string;
}

////////////////////////////////////////////////////////////

export interface CourseSceneVo {
  /**
   * 数据创建者
   */
  createBy?: string;
  /**
   * 数据创建时间
   */
  createTime?: Date;
  /**
   * 删除标志，0代表存在 2代表删除
   */
  delFlag?: string;
  /**
   * 主键id
   */
  id: number;
  /**
   * 场景名称
   */
  name: string;
  /**
   * 排序
   */
  orderNum?: number;
  /**
   * 父id
   */
  parentId?: number;
  /**
   * 备注
   */
  remark?: string;
  /**
   * 状态，1启用，0禁用
   */
  status?: string;
  /**
   * 类型
   */
  type?: string;
  /**
   * 数据更新者
   */
  updateBy?: string;
  /**
   * 数据更新时间
   */
  updateTime?: Date;
}
